Linux OSの中核をなすソフトウェアのことで、以下の機能を持っています。
カーネルは、コンピュータが起動したときに一番最初に動作するプログラムです。カーネルは、コンピュータのさまざまなハードウエアを初期化し、アプリケーションの動作環境を整えます。しかしそのあとは、カーネルは何もしない状態になります。なぜなら、カーネルはアプリケーションが動作するための補助的な仕事をしますので、自発的に動作をする必要がほとんどないからです。後述するアプリケーションからのシステム・コールやハードウエアからの割り込み信号などにより動作する、イベント駆動型のソフトウエアなのです。
2.カーネルのバージョン
● カーネルのバージョン番号の読み方
現在のカーネルのバージョン番号は、4段階になっています。
「2.x.y-x」というように、4つの番号がついています。
たとえば、「Red Hat Enterprise Linux 6」のカーネルバージョン番号は、「2.6.32-279.el6」です。
この場合、1番目の「2」がメジャー番号になります。
ちなみに、現在は「3」が最新バージョンです。
次の「6」が、マイナーバージョン番号になります。
かつては、この2番目の数字が偶数のものが「安定板」、奇数のものが「開発版」でしたが、現在は、関係なくなっています。
そして、3番目の数字が、「リビジョン」番号になります。リビジョン番号は、新しい「機能」が追加されたときに上がります。
4番目は「パッチレベル」の番号になります。パッチ修正ごとに数字が上がっていきます。
ということは、「2.6.32-279.el6」は、
パッチレベルは279です。
しかし、「2.6.32-279.el6」には、5つも数字があります。
この5番目の数字は、ディストリビュータが付けた番号だと思ってください。
たとえば、Redhat Enterprise Linux6 には「el6」、
Redhat Enterprise Linux5 には「el5」と付けていますし、
SUSE Linux Enterprise Server 11なら、「2.6.32.59-0.7.1」などと付けられています。
基本的に、カーネルバージョン番号は、4番目までです。
● カーネルバージョンの確認方法
カーネルバージョンの確認方法はいくつかあります。
の3つです。
他にも、カーネルソースからコンパイルしたカーネルを使用している場合、カーネルのMakefileを見ると分かります。
Makefileは、カーネルソースがインストールされているディレクトリにあります。
カーネルイメージとは、Linuxカーネルを格納して圧縮したファイルであり、通常は /bootディレクトリ内にvmlinuzというファイル名で、配置されています。
コンピュータで実行可能な形式のカーネルを格納しているファイルです。
IA-32(32ビットのx86またはその互換環境)用のカーネル・イメージは「ブート・コード」「セットアップ・ルーチン」「圧縮カーネル」という3パートで構成されます。
【 vmlinuz-xxxx の構成 】
bootsect | setup | vmlinux.out |
bootsect | : | ブートコード。フロッピーディスク用のブートコード。 512 バイト固定。 通常ほとんど使われない。 |
setup | : | セットアップ・ルーチン。デバイスの初期化、プロテクト モードへの移行を行う。 ファイルサイズはセクタサイズ (512 バイト) 単位に調整され、セクタ数は bootsect の 497 バイト目に記録される。 |
vmlinux.out | : | 圧縮カーネル。gzip 形式で圧縮済みのカーネル本体。 自己解凍 (展開) コードを含んでいる。 |
カーネル・イメージはハード・ディスク上の/bootディレクトリに格納されています。「vmlinuz-〈バージョン番号〉」などのファイル名が付けられています。システム起動時に、ブート・ローダー(またはブート・コード)により/bootディレクトリからメモリー上に読み込まれます。読み込まれた後に、圧縮カーネルが展開され、カーネルの起動処理が開始します。
カーネルには「zImage形式」と「bzImage形式」があり、カーネルをコンパイルするときに「make bzImage」などと指定します。 それぞれの違いは
カーネルモジュールとは、カーネルの機能を拡張するためのバイナリファイルです。
カーネル・モジュールとは、通常のアプリケーション・プログラムのように「ユーザー空間」で動くのではなく、「カーネル空間」で動くタイプのプログラム・モジュールです
現在のLinuxカーネルはモジュール形式で設計されています。起動時に最小限度の常駐カーネルだけがメモリにロードされ、必要に応じてモジュールのロードアンロードできるようになっています。ユーザーがカーネルに存在しない機能を要求すると、ドライバ・モジュールが動的にメモリにロードされます。 このため、常に使用するわけではないデバイスのためにメモリを消費することを防ぐことができます。
カーネルモジュールはカーネルのバージョンごとに用意する必要があります。
通常は、 /lib/modules/カーネルバージョン ディレクトリ以下に機能別のサブディレクトリ毎に格納され、.o という拡張子が付けられます。
カーネルモジュールの設定ファイル:/etc/modules.confです。
(一部のディストリビューションでは /etc/conf.modules )
カーネルモジュールの別名や、起動時に渡すオプション情報、モジュールを組み込む順序などが記録されています。
カーネルモジュールの依存関係が記述:modules.dep
あるモジュールを利用するために必要になるモジュールがある場合、依存関係にあるという表現を使います。
このファイルの内容を更新するには depmod -a コマンドを実行します。
(システム起動時やランレベル変更時には自動的に実行される)
カーネル・モジュールを読み込ませるには、「insmod」あるいは「modprobe」コマンドを使います。削除するには「rmmod」コマンドを使います。
自分が使っているLinuxにどんなカーネル・モジュールが読み込まれているか知りたい場合には「lsmod」コマンドを使います。「/sbin/lsmod」のようにコマンドを実行すれば(root権限が必要)、一覧が表示されます。
www.it-shikaku.jp